home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / bin / graffiti_next / graffiti.c < prev    next >
C/C++ Source or Header  |  1993-07-06  |  1KB  |  94 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include "graffiti.h"
  4.  
  5. #define MAXVERTS 1000
  6.  
  7. int newvect = 1;
  8. int wrap = 0;
  9. short nverts = 0;
  10. Point3 verts[MAXVERTS];
  11. int onlyverts = 0;
  12. char *headname = "graffiti-head";
  13. char *tailname = "graffiti-tail";
  14. char *headxformname = "graffiti-head-xform";
  15. char *tailxformname = "graffiti-tail-xform";
  16. char *graffitiname = "graffiti";
  17.  
  18.  
  19. /*
  20. *main(int argc, char *argv[])
  21. *{
  22. *  Initialize();
  23. *  gui_init();
  24. *  gui_main_loop();
  25. *}
  26. */
  27.  
  28. NewPLine()
  29. {
  30.   nverts = 0;
  31. }
  32.  
  33. NewLine()
  34. {
  35.   if (!newvect) {
  36.     EraseHeadAndTail();
  37.     StartNewVector();
  38.     NewPLine();
  39.     newvect = 1;
  40.     wrap = 0;
  41.   }
  42. }
  43.  
  44. void
  45. Initialize()
  46. {
  47.   LangInit(stdout);
  48.   NewPLine();
  49. }
  50.  
  51. void
  52. AddVertex(Point3 *p)
  53. {
  54.   progn();
  55.  
  56.   /* if this is the first vertex of this pline, draw the tail here */
  57.   if (nverts == 0) {
  58.     ShowTailAt(p);
  59.   } else {
  60.     /* otherwise draw the head here, pointing along last segment */
  61.     ShowHeadAt(p, &verts[nverts-1]);
  62.   }
  63.  
  64.   if (nverts < MAXVERTS) {
  65.     verts[nverts] = *p;
  66.     ++nverts;
  67.   }
  68.   Geometry();
  69.   endprogn();
  70. }
  71.  
  72. RemoveVertex()
  73. {
  74.   if (!nverts) return;
  75.   --nverts;
  76.  
  77.   progn();
  78.   Geometry();
  79.   if (nverts == 0) { /* if we are down to 0 vertices, nuke head and tail */
  80.     EraseHeadAndTail();
  81.   } else if (nverts == 1) { /* if just 1 vertex nuke head */
  82.     EraseHead();
  83.   } else if (nverts > 1) { /* if > 1 vertex, move head to last one */
  84.     ShowHeadAt(&verts[nverts-1], &verts[nverts-2]);
  85.   }
  86.   endprogn();
  87. }
  88.  
  89. Close()
  90. {
  91.   wrap = 1;
  92.   Geometry();
  93. }
  94.